#ifndef __IRQ_H
#define __IRQ_H

//isr related
void isrs_install(void);

/* This defines what the stack looks like after an ISR was running */
struct regs
{
    u32int gs, fs, es, ds;      /* pushed the segs last */
    u32int edi, esi, ebp, esp, ebx, edx, ecx, eax;  /* pushed by 'pusha' */
    u32int int_no, err_code;    /* our 'push byte #' and ecodes do this */
    u32int eip, cs, eflags, useresp, ss;   /* pushed by the processor automatically */ 
};

//irq related
void irq_install(void);
void irq_uninstall_handler(int irq);
void irq_install_handler(int irq, void (*handler)(struct regs *r));

#endif
